package sincronizacion;

import dominio.Contenedora;

public class Conversor {
	
	static public dominio.Cliente mobileClienteToCliente(mobile.dominio.Cliente mobileCliente){
		dominio.Zona unaZona;
		unaZona = dominio.Contenedora.getInstancia().zonaXID(mobileCliente.getZona().getId());
		return new dominio.Cliente(mobileCliente.getNombre(),mobileCliente.getDireccion(),mobileCliente.getTelefono1(),mobileCliente.getTelefono2(),unaZona,mobileCliente.getOrden(), null,0, mobileCliente.isfromPalm(),mobileCliente.getSaldo(),mobileCliente.getObservaciones(),new java.util.ArrayList(),false,false);
	}
	
	static public mobile.dominio.Cliente clienteToMobileCliente(dominio.Cliente unCliente){
		mobile.dominio.Cliente mobileCliente = new mobile.dominio.Cliente();
		mobile.dominio.Zona mobileZona = Conversor.zonaToMobileZona(unCliente.getZona());
		mobileCliente.setZona(mobileZona);
		mobile.dominio.Zona mobileZonaSec = Conversor.zonaToMobileZona(unCliente.getZonaSecundaria());
		mobileCliente.setZonaSecundaria(mobileZonaSec);
		mobileCliente.setDireccion(unCliente.getDireccion());
		mobileCliente.setId(unCliente.getId());
		mobileCliente.setInactivo(unCliente.isInactivo());
		mobileCliente.setNombre(unCliente.getNombre());
		mobileCliente.setObservaciones(unCliente.getObservaciones());
		mobileCliente.setOrden(unCliente.getOrden());
		mobileCliente.setOrdenSecundario(unCliente.getOrdenSecundario());
		mobileCliente.setSaldo(unCliente.getSaldo());
		mobileCliente.setTelefono1(unCliente.getTelefono1());
		mobileCliente.setTelefono2(unCliente.getTelefono2());
		mobileCliente.setUsarPrecioEspecial(unCliente.usarPrecioEspecial());
		mobileCliente.setZona(mobileZona);

		if(unCliente.getUltimaCompra() != null){
			java.text.SimpleDateFormat formato = new java.text.SimpleDateFormat("dd/MM/yyyy");
			mobileCliente.setUltimacompra(new waba.util.Date(formato.format(unCliente.getUltimaCompra()), waba.sys.Settings.DATE_DMY));
		}
		return mobileCliente;
	}
	
	static public dominio.Venta mobileVentaToVenta(mobile.dominio.Venta mobileVenta){
		dominio.Venta unaVenta = new dominio.Venta();
		
		try{
			java.text.SimpleDateFormat formato = new java.text.SimpleDateFormat("dd/MM/yyyy");
			unaVenta.setFecha(formato.parse(mobileVenta.getFecha().toString()));
			
			formato = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			unaVenta.setFechahoraventa(formato.parse(mobileVenta.getFechahoraventa().date.toString() + " " + mobileVenta.getFechahoraventa().time.toString()));
		}catch(Exception e){
			System.out.println("Error al parsear la fecha de la venta Nº" + mobileVenta.getId()+ " mientras se importaban los datos: " + e.getMessage());
			return null;
		}
		
		unaVenta.setCliente(dominio.Contenedora.getInstancia().clienteXID(mobileVenta.getCliente().getId()));
		unaVenta.setEntrega(mobileVenta.getEntrega());
		unaVenta.setTotal(mobileVenta.getTotal());
		
		mobile.persistencia.PLineaVenta.instance.lineaVentaXVenta(mobileVenta);
		
		moio.util.Iterator itlineas = mobileVenta.getColLineas().iterator();
		
		dominio.LineaVenta unaLinea;
		
		while(itlineas.hasNext()){
			mobile.dominio.LineaVenta mobileLinea = (mobile.dominio.LineaVenta)itlineas.next();
			unaLinea = new dominio.LineaVenta();
			unaLinea.setCantidaddeja(mobileLinea.getCantidadDeja());
			unaLinea.setCantidaddevuelve(mobileLinea.getCantidadDevuelve());
			unaLinea.setCantidadSinCosto(mobileLinea.getCantidadSinCosto());
			unaLinea.setPrecio(mobileLinea.getPrecio());
			unaLinea.setProducto(Contenedora.getInstancia().productoXID(mobileLinea.getProducto().getId()));
			unaLinea.setTotlin(mobileLinea.getTotlin());
			unaVenta.getColLineas().add(unaLinea);
		}
		
		return unaVenta;
	}
	
	static public mobile.dominio.Palm palmToMobilePalm(dominio.Palm unaPalm){
		mobile.dominio.Palm mobilePalm = new mobile.dominio.Palm();
		mobilePalm.setDescripcion(unaPalm.getDescripcion());
		mobilePalm.setId(unaPalm.getId());
		return mobilePalm;
	}
	
	static public mobile.dominio.Zona zonaToMobileZona(dominio.Zona unaZona){
		if(unaZona != null){
			mobile.dominio.Zona mobileZona = new mobile.dominio.Zona();
			mobileZona.setDescripcion(unaZona.getDescripcion());
			mobileZona.setId(unaZona.getId());
			return mobileZona;
		}else{
			return null;
		}
	}
	
	static public mobile.dominio.Producto productoToMobileProducto(dominio.Producto unProducto){
		mobile.dominio.Producto mobileProducto = new mobile.dominio.Producto();
		mobileProducto.setId(unProducto.getId());
		mobileProducto.setNombre(unProducto.getNombre());
		mobileProducto.setPrecio(unProducto.getPrecio());
		mobileProducto.setPrecioEspecial(unProducto.getPrecioEspecial());
		return mobileProducto;
	}
	
	static public mobile.dominio.SaldoEnvase saldoEnvaseToMobileSaldoEnvase(dominio.Cliente unCliente, dominio.SaldoEnvase unSaldoEnvase){
		mobile.dominio.SaldoEnvase mobileSaldoEnvase = new mobile.dominio.SaldoEnvase();
		mobileSaldoEnvase.setIdCliente(unCliente.getId());
		mobileSaldoEnvase.setProducto(Conversor.productoToMobileProducto(unSaldoEnvase.getProducto()));
		mobileSaldoEnvase.setSaldo(unSaldoEnvase.getSaldo());
		return mobileSaldoEnvase;
	}
	
	static public dominio.Movimiento mobileMovimientoToMovimiento(mobile.dominio.Movimiento mobileMovimiento){
		dominio.Movimiento unMovimiento = new dominio.Movimiento(0,mobileMovimiento.getMonto(), mobileMovimiento.getDescripcion(), mobileMovimiento.getTipomovimiento());
		return unMovimiento;
	}
}